const Koa = require('koa')
const router = require('koa-router')()
const views = require('koa-views')
const ejs = require('ejs')

/**
 * 注意：我们需要在每一个路由中render里面都要渲染一个公共的数据
 * 公共数据放在这里，这样在模板的任何地方都可以使用
  ctx.state = { //写在中间件中
    session: this.session,
    title: 'app'
  }
 */

const app = new Koa()

// 配置模板引擎中间件----第三方中间件
// app.use(views('views', { map: {html: 'ejs' }})) //这样配置模板的后缀名是.html
app.use(views('views', {
  extension: 'ejs' //应用ejs模板引擎,模板的后缀名是.ejs
}))

// 写一个额中间件，配置公共信息
app.use(async (ctx, next) => {
  ctx.state.userinfo = 'limi'
  await next() //继续向下匹配
})

//配置路由
router.get('/', async (ctx) => {
  const title = '你好，ejs'
  await ctx.render('index', {
    title: title
  })
})

router.get('/news', async (ctx) => {
  const list = ['aaa', 'bbb', 'ccc']
  const content = '<h2>后台传过来的html内容</h2>'
  const number = 24
  await ctx.render('news', {
    list,
    content,
    number
  })
})

//启动路由
app.use(router.routes())
app.use(router.allowedMethods())

app.listen(3000)